<?php

namespace Medicina\KernelBundle\Entity;

use Doctrine\ORM\EntityRepository;

class PersonaRepository extends EntityRepository {

    public function getPersonaByCriteria($vars) {

        $em = $this->getEntityManager();

        $dni = $vars->getDni();
        $apellido = $vars->getApellido();
        $nombre = $vars->getNombre();

        if ($dni != "") {
            $dni = '\'%' . $dni . '%\'';
        } else {
            $dni = '\'zzzz\'';
        }

        if ($apellido != "") {
            $apellido = '\'%' . $apellido . '%\'';
        } else {
            $apellido = '\'zzzz\'';
        }

        if ($nombre != "") {
            $nombre = '\'%' . $nombre . '%\'';
        } else {
            $nombre = '\'zzzz\'';
        }

        $varAux = '\'zzzz\'';

        $consulta = $em->createQueryBuilder()
                ->select('p')
                ->from('\Medicina\KernelBundle\Entity\Persona', 'p')
                ->where('( p.dni like ' . $dni . ' or ' . $dni . ' = ' . $varAux . ')')
                ->andWhere('(p.apellido like ' . $apellido . ' or ' . $apellido . ' = ' . $varAux . ')')
                ->andWhere('(p.nombre like ' . $nombre . ' or ' . $nombre . ' = ' . $varAux . ')')
                ->orderBy('p.apellido', 'ASC')
                ->getQuery();

//        die($consulta->getSQL());
        $consulta->useResultCache(true, 3600);
        return $consulta->getResult();
    }

}
